package com.tanhua.dubbo.server.api;

import com.tanhua.dubbo.server.pojo.*;

import java.util.List;

//定义测灵魂的接口
public interface TestSoulApi {
    /**
     * 根据用户id查询问卷表
     *
     * @param userId
     * @return
     */
    List<Questionnaire> queryQuestionnaire(Long userId);

    /**
     * 根据用户id查询问卷数量
     *
     * @param userId
     * @return
     */
    Long countQuestionnaire(Long userId);

    /**
     * 保存问卷
     *
     * @param questionnaire
     * @return
     */
    String saveQuestionnaire(Questionnaire questionnaire);

    /**
     * 跟新问卷表
     *
     * @param questionnaire
     * @return
     */
    Questionnaire updateQuestionnaire(Questionnaire questionnaire);

    /**
     * 根据level查询试题
     *
     * @param integer
     * @return
     */
    List<Question> queryQuestionByLevel(Integer integer);

    /**
     * 根据试题编号查试题等级
     *
     * @param questionNumber
     * @return
     */
    Question queryQuestionByQuestionNumber(String questionNumber);

    /**
     * 根据试题编号查询选项
     *
     * @param string
     * @return
     */
    List<Option> queryOptionByQuestionNumber(String string);

    /**
     * 根据试题编号和选项编号查询选项表
     *
     * @param questionNumber
     * @param optionNumber
     * @return
     */
    Option queryOptionByQuestionNumAndOptionNum(String questionNumber, String optionNumber);

    /**
     * 保存结果到报告表
     *
     * @param report
     * @return
     */
    Report saveReport(Report report);

    /**
     * 跟新报告表
     *
     * @param report
     * @return
     */
    Report updateReport(Report report);

    /**
     * 根据用户id查询报告表
     *
     * @param userId
     * @return
     */
    Report queryReportByUserId(Long userId);

    /**
     * 根据类型查询测试结果的其他信息
     *
     * @param type
     * @return
     */
    TestResult queryTestResultByType(Integer type);

    /**
     * 根据类型查询测试结果的其他信息
     *
     * @param type
     * @return
     */
    List<Dimension> queryDimensionByType(Integer type);

    /**
     * 根据报告id和用户id查询报告
     *
     * @param reportId
     * @return
     */
    Report queryReportById(String reportId, Long userId);

    /**
     * 根据用户id和类型查询报告表
     *
     * @param userId
     * @param type
     * @return
     */
    List<Report> queryReportByUserIdAndType(Long userId, Integer type);
}
